\chapter{Conclusion}
A realization of the demanded process was created. The major part of the process is realized as a state machine, that decides which step should be performed and what class should handle the partial task. All program parts including the state machine is implemented using JAVA code. Depending on the step secondary threads were started or stopped that actively deal with control issues or with the throw strategy. All control principles are based on classical PID or cascaded PID control. The throw strategy itself is represented as a state machine.\\
The user can start or stop the state machine and tune all needed controller parameters using a graphical interface. This interface was created with JAVA/SWING and available Real-Time-Systems-Library components.
\section{Difficulties and outlook}
Besides any programming difficulties that normally appear with bigger projects, the development went quite well. Since the parting of writing the class files was easy, the debugging was even harder due to the fact that nearly all parts are somehow depending on the functionality of other parts. This gets even worse thinking of the multithreading nature and the (quasi-)simultaneously executing.\\
It was also difficult to find satisfying parameter settings for the controllers. Accurate positioning is needed for detecting and throwing of all balls. Small roughness on the beam and the ball cause the ball to hang and makes it hard to reach a certain point fast and/or very accurate.\\
The beam process seems to be time-variant and changing its behavior with the temperature of the motor.\\%and with the weather
Another problem is the solenoid who sometimes gets stuck. As the process continues errors occur because there is no ball on the beam.\\
To make the process quicker new parameter settings for the controllers could be found. If the overshot would be smaller the tolerances on the reached positions could be satisfied earlier and the state machine could change its states quicker. The parameters could also be changed in respect to the detected ball size.\\
In the actual implementation the mean values of the needed output to hold each ball in position are predefined and written down in the source code. These numbers are essential for the detection of the ball size. An additional method to calibrate the process just before starting the circle or to recalibrate after the physical behavior of the motor has changed could be also an improvement.